package com.pinusmusic.dao;

import com.pinusmusic.domain.*;

import java.util.List;

public interface MusicDao {
    /**
     * 歌曲模糊查询(分页功能,通过歌曲名查询)
     * @param start 开始的下标
     * @param rows  查询条数
     * @param name 用户输入
     * @return
     */
    List<Music> findMusicsByName(int start ,int rows,String name);

    /**
     * 根据输入获取数量
     * @param name
     * @return
     */
    int getTotalCount(String name);

    /**
     * 删除歌曲
     * @param sid
     */
    void deleteMusicBySid(int sid);

    /**
     * 根据歌手id查询其下歌曲
     * @param sid
     * @return
     */
    List<Music> findMusicBySid(int sid);

    /**
     * 获取歌单下歌曲的数量
     * @param mlid
     * @return
     */
    int getTotalCount(int mlid);

    /**
     * 查询所有不在歌单中的歌
     * @param start
     * @param rows
     * @param mlid
     * @return
     */
    List<Music> findAllMusicByPage(int start, int rows, int mlid);

    /**
     * 查询歌单中所有的歌
     * @param start
     * @param rows
     * @param mlid
     * @return
     */
    List<Music> findMusicInListByPage(int start, int rows, int mlid);

    /**
     * 获取歌单中歌曲数量
     * @param mlid
     * @return
     */
    int getCount(int mlid);

    /**
     * 上传歌曲
     * @param music
     * @return
     */
    boolean musicUpload(Music music);

    int findSidBySingername(String singername);

    /**
     * 删除歌曲
     * @param mid
     * @return
     */
    boolean musicDelete(int mid);

    /**
     * 查询歌曲路径
     * @param mid
     * @return
     */
    String findPathByMid(int mid);

    /**
     * 更新歌曲
     * @param music
     * @return
     */
    boolean musicUpdate(Music music);

    /**
     * 获取歌手其歌曲数量
     * @param sid
     * @return
     */
    int getTotalCountBySid(Integer sid);

    /**
     * 歌手的歌曲分页查询
     * @param start
     * @param rows
     * @param sid
     * @return
     */
    List<Music> findSingerMusicByPage(int start, int rows, Integer sid);

    /**
     * 根据id查询歌曲
     * @param mid
     * @return
     */
    Music findMusicByMid(int mid);

    /**
     * 获取20首歌用于激活vip
     * @return
     */
    List<Music> find20Music();

    /**
     * 通过歌词模糊查询歌曲
     * @param start
     * @param rows
     * @param lyrics
     * @return
     */
    List<Music> findMusicsByLyrics(int start ,int rows,String lyrics);

    int getCountByLyrics(String lyrics);
    //根据分类查询歌曲(语种id、风格id)
    List<Music> findMusicsBySort(int start ,int rows,int languageid,int styleid);

    int getCountBySort(int languageid, int styleid);

    MusicStyle findMusicStyle(Integer musicstyleid);

    MusicLanguage findMusicLang(Integer musiclanguageid);

    List<Comment> findCommentsByMid(Integer mid);

    User findUserByUid(Integer uid);

    int findCommentsCounts(Integer mid);

    void addComment(Comment comment);

    Singer findSingerByMid(Integer sid);

    List<Music> findAllMusic();

    Singer findSingerBySid(Integer sid);

    int findFavorsCounts(Integer mid);

    List<Music> findMusicsByMlid(Integer mlid);
}
